博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
flask+sqlite3+echarts2+ajax数据可视化--静态图
阅读量:7090 次
发布时间:2019-06-28

本文共 2234 字,大约阅读时间需要 7 分钟。

结构:

/www
|
|-- /static
| |
| |-- echarts.js(当然还有echarts原dist目录下的文件(夹))
|
|-- /templates
| |
| |-- index.html
|
|-- app.py
|
|-- create_db.py

一、先准备数据

# create_db.py# 只运行一次!!!import sqlite3# 连接conn = sqlite3.connect('mydb.db')c = conn.cursor()# 创建表c.execute('''DROP TABLE IF EXISTS weather''')c.execute('''CREATE TABLE weather (month text, evaporation text, precipitation text)''')# 数据# 格式:月份,蒸发量,降水量purchases = [('1月', 2, 2.6),             ('2月', 4.9, 5.9),             ('3月', 7, 9),             ('4月', 23.2, 26.4),             ('5月', 25.6, 28.7),             ('6月', 76.7, 70.7),             ('7月', 135.6, 175.6),             ('8月', 162.2, 182.2),             ('9月', 32.6, 48.7),             ('10月', 20, 18.8),             ('11月', 6.4, 6),             ('12月', 3.3, 2.3)            ]# 插入数据c.executemany('INSERT INTO weather VALUES (?,?,?)', purchases)# 提交!!!conn.commit()# 查询方式一for row in c.execute('SELECT * FROM weather'):    print(row)        # 查询方式二c.execute('SELECT * FROM weather')print(c.fetchall())# 查询方式二_2res = c.execute('SELECT * FROM weather')print(res.fetchall())# 关闭conn.close()

二、定义路由

定义了两个路由:'/'和'/weather',后一个用于处理ajax,返回json格式。形如:

{month:['1月','2月',...],evaporation:[3.1, 4, 4.6, ...],precipitation:[...]}

# app.pyimport sqlite3from flask import Flask, request, render_template, jsonifyapp = Flask(__name__)def get_db():    db = sqlite3.connect('mydb.db')    db.row_factory = sqlite3.Row    return dbdef query_db(query, args=(), one=False):    db = get_db()    cur = db.execute(query, args)    db.commit()    rv = cur.fetchall()    db.close()    return (rv[0] if rv else None) if one else rv@app.route("/", methods=["GET"])def index():    return render_template("index.html")@app.route("/weather", methods=["POST"])def weather():    if request.method == "POST":        res = query_db("SELECT * FROM weather")        return jsonify(month = [x[0] for x in res],                   evaporation = [x[1] for x in res],                    precipitation = [x[2] for x in res])if __name__ == "__main__":  app.run(debug=True)

三、使用echarts

这里使用单文件导入模式,。

值得注意的是导入echarts.js时使用了url_for函数。初时,我使用了src="js/echarts.js",老是导入不了!原因不详!

index.html文件如下:

    
ECharts Ajax

效果图

img_5028ed2cafea5d180bc76306e02bcf28.png

转载地址:http://nsbql.baihongyu.com/

你可能感兴趣的文章
技术解析:IBM Connections功能扩展
查看>>
开源:好处与风险并存
查看>>
新版飞康CDP、NSS全新功能完全解读
查看>>
两大数据库安全产品比拼:IBM Guardium VS Imperva SecureSpher
查看>>
移动支付市场爆发 告别实体钱包时代有望?
查看>>
Kali如今用云GPU破解口令了
查看>>
亿点连接荣获“2017最佳创新出境产品奖”
查看>>
解析提高PHP执行效率的50个技巧
查看>>
思科发布针对勒索软件TeslaCrypt的解密工具
查看>>
精益求精的代码却被带漏洞组件毁于一旦
查看>>
IBM马修:利用数据分析实现企业创新
查看>>
卡巴斯基:高达98%的WannaCry 受害者运行的是 Windows 7系统
查看>>
PMC 赢得客户认可,获富士通颁发2015年度技术大奖
查看>>
BigBench on MaxCompute 基准测试套件简明安装与运行指南
查看>>
ABB机器人事业部产品架构总监Daniel ppling:面对机器人技术,我们应该关注什么?...
查看>>
《中国人工智能学会通讯》——1.3 若干研究结果
查看>>
IDC指出,NetApp在全闪存市场上位列第二
查看>>
ASLR保护机制被突破的攻击技术分析
查看>>
如何保证CAN网络中通讯的可靠性和节点数
查看>>
衡量云性能:我们需要一把不同于以往的标尺
查看>>